﻿#ifndef DATA_H
#define DATA_H

class Data
{
public:
    /*
     * Function: Data
     * Summary: 构造函数，用于初始化界面数据，包括随机生成两个数，当前总得分设置为0
     * Input: void
     * Output: void
     */
    Data();

    /*
     * Function: ~Data
     * Summary: 析构函数，用于释放堆区的棋盘数据
     * Input: void
     * Output: void
     */
    ~Data();

    /*
     * Function: getArray
     * Summary: 获取成员变量checkerboard中的数据
     * Input: void
     * Output: 返回值为二维数组所对应的指针
     */
    int** getArray();

    /*
     * Function: generateNums
     * Summary: 产生两个随机数
     * Input: void
     * Output: 返回值为两个随机数产生是否成功的标志
     */
    bool generateNums();

    /*
     * Function: addScore
     * Summary: 设置成员变量score的值
     * Input: newScore为单次合并的分数
     * Output: 返回值为设置是否成功的标志
     */
    bool addScore(int newScore);

    /*
     * Function: getScore
     * Summary: 获取成员变量score的值
     * Input: void
     * Output: 返回值为获取的值
     */
    int getScore();

    /*
     * Function: getBestScore
     * Summary: 获取成员变量bestScore的值
     * Input: void
     * Output: 返回值为获取的值
     */
    int getBestScore();

    /*
     * Function: setBestScore
     * Summary: 设置成员变量bestScore的值
     * Input: optimalScore为传进来的最佳分数
     * Output: 返回值为设置是否成功的标志
     */
    bool setBestScore(int optimalScore);

    /*
     * Function: cleanData
     * Summary: 将分数与最佳分数比较，若超过最佳分数，则更新最佳分数，然后清除数组和score中的数据
     * Input: void
     * Output: 返回值为清除是否成功的标志
     */
    bool cleanData();

private:

    //Summary: 棋盘数据，4*4的二维数组
    int** checkerboard;

    //Summary: 当前获得的分数
    int score;

    //Summary: 最佳分数
    int bestScore;
};

#endif // DATA_H
